/***************************************************************************
 *   Copyright (C) 2008 by Chris Vickery   *
 *   chrisinajar@gmail.com   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef EVENTRECEIVER_H
#define EVENTRECEIVER_H

#include <QObject>
#include <irrlicht.h>

/**
	@author Chris Vickery <chrisinajar@gmail.com>
	
	The eventReceiver class is used to take in user input and gui events. It stays alive throughout the entire app, using signals and slots to communicate with the rest of the program. To pick up user input connect your class to the correct signals. This allows a theoretical unlimited number of classes to arbitrarily start and stop listening for events at any given time, which is great.
 */
class EventReceiver : public QObject, public irr::IEventReceiver
{
	Q_OBJECT
	public:
		EventReceiver(QObject *parent = 0);
		virtual bool OnEvent(const irr::SEvent& event);
		~EventReceiver();
		
	signals:
		void closeApp();
		void keyPressed(irr::EKEY_CODE);
		void buttonClicked(irr::s32);

};

#endif
